package com.xx.springboot.DataStructure.LeetCode.String;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
     给定字符串J 代表石头中宝石的类型，和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型，你想知道你拥有的石头中有多少是宝石。

     J 中的字母不重复，J 和 S中的所有字符都是字母。字母区分大小写，因此"a"和"A"是不同类型的石头。

     示例 1:

     输入: J = "aA", S = "aAAbbbb"
     输出: 3
     示例 2:

     输入: J = "z", S = "ZZ"
     输出: 0
     注意:

     S 和 J 最多含有50个字母。
     J 中的字符不重复。
 */
public class numJewelsInStones {
    /**
     * 1.创建一个hash 数组, 记录宝石中存在的类型
     * 2.循环石头中的类型, 判断hash 数组中时候有值  有值 ++
     * @param J
     * @param S
     * @return
     */
    public int numJewelsInStones(String J, String S) {
        int totalJewel = 0;
        int[] jewels = new int[70];

        for (int i = 0 ; i < J.length() ; i ++) {
            jewels[J.charAt(i) - 'A'] = 1;
        }

        for (int i = 0 ; i < S.length(); i ++){
            if(jewels[S.charAt(i) - 'A'] == 1)
                totalJewel ++;
        }

        return totalJewel;
    }

    public static void main(String[] args) {
        String s = "abcd";
        String j = "bdis";
        System.out.println(j.replaceAll("[isc]", ""));

        List<Integer> list = new ArrayList<>();
        list.add(10);
        list.add(12);
        List<Double> newList = list.stream().map(Integer::doubleValue).filter(f -> f.intValue() == 10).collect(Collectors.toList());


        newList.forEach(e -> {
            System.out.println(e);
        });
    }
}
